# -*- coding: utf-8 -*-
"""
Created on Sun Aug  6 20:13:24 2023

@author: skunk69
"""
import json

chinese_name = u'青春期性心理健康量表'
english_name = 'Adolescent Sexual Mental Health Scale'
abbreviation = 'ASMHS'
category = u'一般心理健康与行为问题量表'

outline = u"""《青春期性心理健康量表》是由骆一、郑涌编制，用于评价青少年性心理健康状况，包括性认知、性价值观、性适应三个维度。"""

instruction = u"""这是一份无记名调查问卷，这些测验是调查你的心情和感受的，与学习成绩无关，答案也没有好坏之分，请按照你平时实际情况进行选择，你的真实回答将给青春期性心理健康研究提供宝贵的依据。"""

with open('ASMHS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('、',maxsplit=1)
    items[key] = value

reverse_items = [8,9,13,14,15,18,19,22,30,32,33,34,36,39,41,43,46]
scales = [u'生理知识',u'性知识',u'性观念',u'性态度',u'社会适应',u'性控制力',u'自身适应']
scales_items = [
    [1,3,7,12,25],# 生理知识
    [17,20,23,27],# 性知识
    [9,15,22,36,43],# 性观念
    [18,32,33,39],# 性态度
    [26,29,31,37,38,40,42,44,45],# 社会适应
    [4,8,13,19,21,34],# 性控制力
    [2,5,10,11,16],# 自身适应   
    ]
lie_detect_items = [[6,14],[24,30],[28,46],[35,41]]

check = []
for l in scales_items:
    check = check+l
for l in lie_detect_items:
    check = check+l

print(len(check))
check_set = {i for i in sorted(check)}-{i for i in range(1,47)}
print(check_set)

factors = [u'性认知',u'性价值观',u'性适应']
factors_scales = [
    [u'生理知识',u'性知识'],
    [u'性观念',u'性态度'],
    [u'社会适应',u'性控制力',u'自身适应'],
    ]
rating = [u'完全不符合',u'基本不符合',u'不确定',u'基本符合',u'完全符合']
score_rules = list(range(1,6))

implementation = u"""该量表为自评量表，由青少年按照自身真实情况填写。"""

reliability = u"""正式样本为国内几个大城市的初中、高中和大学学生。青春期性心理健康各分量表及因子的内部一致性系数均在0.629以上，重测信度系数在0.636~0.833，分半信度在0.593~0.769，而总量表的上述三项指标分别为0.822，0.856，0.759，均比较理想。"""
validity = u"""在内容效度方面，本量表的因子构想和题项编拟是基于文献综述、相关量表开放式问卷调查和个别访谈的结果。在效标效度方面，统计分析表明，性心理健康与心理健康呈中等程度的正相关。在构想效度方面，相关分析表明，各因子之间具有一定的独立性，较好地反映了量表所要调查的结构。验证性因子分析结果表明，除了性适应分量表的赋范拟合指数（NFI）和比较拟合指数（CFI）、性价值观分量表的NFI稍低于0.9，其他模型检验指标都表明了理论模型与原始数据的拟合程度达到了设计要求。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向题目反向计分，然后将各维度题目相加得到各维度分，所有题目得分之和即为该问卷的总分。对于成对测谎题，若得分不一致，说明被试者不认真作答。"""

applications = u"""由于性心理健康问题时代性强，尚需更多后续研究以确定实际应用效果。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':{
        'instruction':instruction,
        'items':items,
        'reverse_items':reverse_items,
        'scales':scales,
        'scales_items':scales_items,
        'lie_detect_items':lie_detect_items,
        'factors':factors,
        'factors_scales':factors_scales,
        'rating':rating,
        'score_rules':score_rules
                },
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)
